"""
此示例描述了如何使用工作流接口进行聊天。
"""

import os
import sys
import json
# 我们的官方 coze Python SDK [cozepy](https://github.com/coze-dev/coze-py)
from cozepy import COZE_CN_BASE_URL

# 添加项目根目录到Python路径，以便导入config_reader模块
current_dir = os.path.dirname(os.path.abspath(__file__))
project_root = os.path.dirname(os.path.dirname(current_dir))
sys.path.append(project_root)

from config_reader import get_coze_config

# 从配置文件获取Coze配置
coze_config = get_coze_config()
coze_api_token = coze_config['token']
workflow_id = coze_config['workflow_id']

if not coze_api_token:
    raise ValueError("请在 config.ini 文件中设置 COZE_API_TOKEN")

# 默认访问地址是 api.coze.com，但如果您需要访问 api.coze.cn，
# 请使用 base_url 配置 API 端点进行访问
coze_api_base = COZE_CN_BASE_URL

from cozepy import Coze, TokenAuth, Message, ChatStatus, MessageContentType  # noqa

# 通过 access_token 初始化 Coze 客户端。
coze = Coze(auth=TokenAuth(token=coze_api_token), base_url=coze_api_base)

def load_parameters(file_name):
    """从JSON文件加载参数"""
    file_path = os.path.join(os.path.dirname(__file__), file_name)
    with open(file_path, 'r', encoding='utf-8') as f:
        return json.load(f)

def show_menu():
    """显示菜单选项"""
    print("\n" + "="*50)
    print("请选择要执行的参数文件：")
    print("1. 执行A参数文件 (parameters_A.json)")
    print("2. 执行B参数文件 (parameters_B.json)")
    print("3. 执行C参数文件 (parameters_C.json)")
    print("4. 执行D参数文件 (parameters_D.json)")
    print("5. 执行E参数文件 (parameters_E.json)")
    print("0. 退出程序")
    print("="*50)

def execute_workflow(choice):
    """根据用户选择执行对应的工作流"""
    try:
        if choice == "1":
            parameters = load_parameters("parameters_A.json")
            print("已选择A参数文件")
        elif choice == "2":
            parameters = load_parameters("parameters_B.json")
            print("已选择B参数文件")
        elif choice == "3":
            parameters = load_parameters("parameters_C.json")
            print("已选择C参数文件")
        elif choice == "4":
            parameters = load_parameters("parameters_D.json")
            print("已选择D参数文件")
        elif choice == "5":
            parameters = load_parameters("parameters_E.json")
            print("已选择E参数文件")
        else:
            print("无效选择")
            return
        
        # 工作流配置
        workflow_config = {
            "workflow_id": workflow_id,
            "parameters": parameters
        }
        
        print(f"使用参数: {parameters}")
        
        # 调用 coze.workflows.runs.create 方法来创建工作流运行。create 方法
        # 是非流式聊天，将返回 WorkflowRunResult 类。
        workflow = coze.workflows.runs.create(
            workflow_id=workflow_config["workflow_id"],
            parameters=workflow_config["parameters"]
        )
        
        print("workflow.data")
        print(workflow.data)
        print("\n工作流执行完成！")
        
    except Exception as e:
        print(f"执行工作流时出错: {e}")

def main():
    print("欢迎使用工作流执行程序！")
    
    while True:
        show_menu()
        
        try:
            choice = input("请输入选择 (0/1/2/3/4/5): ").strip()
            
            if choice == "0":
                print("程序已退出")
                break
            elif choice in ["1", "2", "3", "4", "5"]:
                execute_workflow(choice)
            else:
                print("无效选择，请输入0、1、2、3、4或5")
                
        except KeyboardInterrupt:
            print("\n程序已退出")
            break
        except Exception as e:
            print(f"输入错误: {e}")

if __name__ == "__main__":
    main()